X-Git-Url: http://www.aleph1.co.uk/gitweb/?a=blobdiff_plain;ds=sidebyside;f=vendor%2Feasyrdf%2Feasyrdf%2Flib%2FEasyRdf%2FSerialiser%2FJsonLd_real.php;fp=vendor%2Feasyrdf%2Feasyrdf%2Flib%2FEasyRdf%2FSerialiser%2FJsonLd_real.php;h=4fb6c49da1880fccd9129e8778306820cf77a72f;hb=a2bd1bf0c2c1f1a17d188f4dc0726a45494cefae;hp=0000000000000000000000000000000000000000;hpb=57c063afa3f66b07c4bbddc2d6129a96d90f0aad;p=yaffs-website diff --git a/vendor/easyrdf/easyrdf/lib/EasyRdf/Serialiser/JsonLd_real.php b/vendor/easyrdf/easyrdf/lib/EasyRdf/Serialiser/JsonLd_real.php new file mode 100644 index 000000000..4fb6c49da --- /dev/null +++ b/vendor/easyrdf/easyrdf/lib/EasyRdf/Serialiser/JsonLd_real.php @@ -0,0 +1,141 @@ +toRdfPhp() as $resource => $properties) { + if (array_key_exists($resource, $nodes)) { + $node = $nodes[$resource]; + } else { + $node = $ld_graph->createNode($resource); + $nodes[$resource] = $node; + } + + foreach ($properties as $property => $values) { + foreach ($values as $value) { + if ($value['type'] == 'bnode' or $value['type'] == 'uri') { + if (array_key_exists($value['value'], $nodes)) { + $_value = $nodes[$value['value']]; + } else { + $_value = $ld_graph->createNode($value['value']); + $nodes[$value['value']] = $_value; + } + } elseif ($value['type'] == 'literal') { + if (isset($value['lang'])) { + $_value = new \ML\JsonLD\LanguageTaggedString($value['value'], $value['lang']); + } elseif (isset($value['datatype'])) { + $_value = new \ML\JsonLD\TypedValue($value['value'], $value['datatype']); + } else { + $_value = $value['value']; + } + } else { + throw new EasyRdf_Exception( + "Unable to serialise object to JSON-LD: ".$value['type'] + ); + } + + if ($property == "http://www.w3.org/1999/02/22-rdf-syntax-ns#type") { + $node->addType($_value); + } else { + $node->addPropertyValue($property, $_value); + } + } + } + } + + // OPTIONS + $use_native_types = !(isset($options['expand_native_types']) and $options['expand_native_types'] == true); + $should_compact = (isset($options['compact']) and $options['compact'] == true); + $should_frame = isset($options['frame']); + + // expanded form + $data = $ld_graph->toJsonLd($use_native_types); + + if ($should_frame) { + $data = \ML\JsonLD\JsonLD::frame($data, $options['frame'], $options); + + } + + if ($should_compact) { + // compact form + $compact_context = isset($options['context']) ? $options['context'] : null; + $compact_options = array( + 'useNativeTypes' => $use_native_types, + 'base' => $graph->getUri() + ); + + $data = \ML\JsonLD\JsonLD::compact($data, $compact_context, $compact_options); + } + + return \ML\JsonLD\JsonLD::toString($data); + } +}