wishthis/vendor/ml/json-ld/NodeInterface.php
2022-01-21 09:23:52 +01:00

218 lines
6.6 KiB
PHP

<?php
/*
* (c) Markus Lanthaler <mail@markus-lanthaler.com>
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace ML\JsonLD;
/**
* A generic interface for nodes in a JSON-LD graph.
*
* @author Markus Lanthaler <mail@markus-lanthaler.com>
*/
interface NodeInterface
{
/**
* Get ID
*
* @return string|null The ID of the node or null.
*/
public function getId();
/**
* Set the node type
*
* @param null|NodeInterface|array[NodeInterface] The type(s) of this node.
*
* @return self
*
* @throws \InvalidArgumentException If type is not null, a Node or an
* array of Nodes.
*/
public function setType($type);
/**
* Add a type to this node
*
* @param NodeInterface The type to add.
*
* @return self
*/
public function addType(NodeInterface $type);
/**
* Remove a type from this node
*
* @param NodeInterface The type to remove.
*
* @return self
*/
public function removeType(NodeInterface $type);
/**
* Get node type
*
* @return null|NodeInterface|NodeInterface[] Returns the type(s) of this node.
*/
public function getType();
/**
* Get the nodes which have this node as their type
*
* This will return all nodes that link to this Node instance via the
* @type (rdf:type) property.
*
* @return NodeInterface[] Returns the node(s) having this node as their
* type.
*/
public function getNodesWithThisType();
/**
* Get the graph the node belongs to
*
* @return null|GraphInterface Returns the graph the node belongs to or
* null if the node doesn't belong to any graph.
*/
public function getGraph();
/**
* Removes the node from the graph
*
* This will also remove all references to and from other nodes in this
* node's graph.
*
* @return self
*/
public function removeFromGraph();
/**
* Is this node a blank node
*
* A blank node is a node whose identifier has just local meaning. It has
* therefore a node identifier with the prefix <code>_:</code> or no
* identifier at all.
*
* @return bool Returns true if the node is a blank node, otherwise false.
*/
public function isBlankNode();
/**
* Set a property of the node
*
* If the value is or contains a reference to a node which is not part
* of the graph, the referenced node will added to the graph as well.
* If the referenced node is already part of another graph a copy of the
* node will be created and added to the graph.
*
* @param string $property The name of the property.
* @param mixed $value The value of the property. This MUST NOT be
* an array. Use null to remove the property.
*
* @return self
*
* @throws \InvalidArgumentException If value is an array or an object
* which is neither a language-tagged
* string nor a typed value or a node.
*/
public function setProperty($property, $value);
/**
* Adds a value to a property of the node
*
* If the value already exists, it won't be added again, i.e., there
* won't be any duplicate property values.
*
* If the value is or contains a reference to a node which is not part
* of the graph, the referenced node will added to the graph as well.
* If the referenced node is already part of another graph a copy of the
* node will be created and added to the graph.
*
* @param string $property The name of the property.
* @param mixed $value The value of the property. This MUST NOT be
* an array.
*
* @return self
*
* @throws \InvalidArgumentException If value is an array or an object
* which is neither a language-tagged
* string nor a typed value or a node.
*/
public function addPropertyValue($property, $value);
/**
* Removes a property and all it's values
*
* @param string $property The name of the property to remove.
*
* @return self
*/
public function removeProperty($property);
/**
* Removes a property value
*
* @param string $property The name of the property.
* @param mixed $value The value of the property. This MUST NOT be
* an array.
*
* @return self
*/
public function removePropertyValue($property, $value);
/**
* Get the properties of this node
*
* @return array Returns an associative array containing all properties
* of this node. The key is the property name whereas the
* value is the property's value.
*/
public function getProperties();
/**
* Get the value of a property
*
* @param string $property The name of the property.
*
* @return mixed Returns the value of the property or null if the
* property doesn't exist.
*/
public function getProperty($property);
/**
* Get the reverse properties of this node
*
* @return array Returns an associative array containing all reverse
* properties of this node. The key is the property name
* whereas the value is an array of nodes linking to this
* instance via that property.
*/
public function getReverseProperties();
/**
* Get the nodes of a reverse property
*
* This will return all nodes that link to this Node instance via the
* specified property.
*
* @param string $property The name of the reverse property.
*
* @return null|NodeInterface|NodeInterface[] Returns the node(s) pointing
* to this instance via the specified
* property or null if no such node exists.
*/
public function getReverseProperty($property);
/**
* Compares this node object to the specified value.
*
* @param mixed $other The value this instance should be compared to.
*
* @return bool Returns true if the passed value is the same as this
* instance; false otherwise.
*/
public function equals(NodeInterface $other);
}